﻿Imports Controle
Public Class frmOrdemServico
#Region "Variáveis"

    Private prvIDOrdem As Int32
    Private prvIDCliente As Int32
    Private prvIDContato As Int32
    Private prvIDVendedor As Int32

    Private sMensagemValidacao As String = ""

    Dim objClientes As New ctrCliente
    Dim objContatos As New ctrContato
    Dim objOrdemServico As New ctrOrdemServico

#End Region
#Region "Métodos Privados"
    Private Sub CarregarDados()
        Dim drOrdem As DataRow

        Try

            If (prvIDOrdem > 0) Then
                drOrdem = objOrdemServico.selecionarOrdem(prvIDOrdem)

                If (Not drOrdem Is Nothing) Then
                    With drOrdem
                        txtIDOS.Text = prvIDOrdem
                        prvIDCliente = Persistencia.perConversao.nuloParaZero(.Item("IDCliente"))
                        txtIDCliente.Text = prvIDCliente
                        txtNomeCliente.Text = Persistencia.perConversao.nuloParaVazio(.Item("RazaoSocial"))
                        prvIDContato = Persistencia.perConversao.nuloParaZero(.Item("IDContato"))
                        txtIDContato.Text = prvIDContato
                        txtContato.Text = Persistencia.perConversao.nuloParaVazio(.Item("NomeContato"))
                        prvIDVendedor = Persistencia.perConversao.nuloParaZero(.Item("IDUsuarioResp"))
                        txtIDVendedor.Text = prvIDVendedor
                        txtVendedor.Text = Persistencia.perConversao.nuloParaVazio(.Item("NomeUsuario"))
                        txtNumOs.Text = Persistencia.perConversao.nuloParaVazio(.Item("NumOS"))
                        dtEntrada.Text = Persistencia.perConversao.nuloParaData(.Item("DtEntrada"))
                        dtSaida.Text = Persistencia.perConversao.nuloParaData(.Item("DtSaida"))
                        If (Not (.Item("DtBaixa") Is DBNull.Value)) Then
                            chkConclusao.Checked = True
                            dtConclusao.Text = .Item("DtBaixa")
                        End If
                    End With
                    modoAtual = eModo.eAguardar
                End If
            End If

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Sub
    Private Sub Salvar()
        Dim bRetorno As Boolean
        Try
            If Me.validarFormulario Then
                bRetorno = Me.objOrdemServico.salvar(prvIDOrdem, _
                                                     prvIDCliente, _
                                                     prvIDContato, _
                                                     prvIDVendedor, _
                                                     CDate(dtEntrada.Text), _
                                                     CDate(dtSaida.Text), _
                                                     CDate(dtConclusao.Text), _
                                                     chkConclusao.Checked, _
                                                     txtNumOs.Text.Trim)

                If bRetorno Then
                    MyBase.Codigo = Me.objOrdemServico.IDOrdem
                    Me.prvIDOrdem = MyBase.Codigo
                    MyBase.modoAtual = eModo.eAguardar
                    Me.txtIDOS.Text = Me.prvIDOrdem
                Else
                    MyBase.modoAtual = eModo.eEditar
                End If
            Else
                If (sMensagemValidacao <> "") Then
                    MsgBox(Me.sMensagemValidacao, MsgBoxStyle.Exclamation, Me.Text)
                End If
                MyBase.modoAtual = eModo.eEditar
                Exit Sub
            End If

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try
    End Sub
    Private Function validarFormulario() As Boolean
        Dim bRetorno As Boolean = True
        Dim sMsg As String = ""
        sMensagemValidacao = ""

        Try

            If prvIDCliente = 0 Then
                sMensagemValidacao = "- Cliente não selecionado."
                bRetorno = False
            End If

            If prvIDContato = 0 Then
                sMensagemValidacao = "- Contato não selecionado."
                bRetorno = False
            End If

            If (CDate(dtSaida.Text) < CDate(dtEntrada.Text)) Then
                sMensagemValidacao = "- Data de saída anterior a date de entrada."
                bRetorno = False
            End If

            If (chkConclusao.Checked And CDate(dtConclusao.Text) < CDate(dtEntrada.Text)) Then
                sMensagemValidacao = "- Data de saída anterior a date de entrada."
                bRetorno = False
            End If

            If (txtNumOs.Text = String.Empty) Then
                sMensagemValidacao = "- Número da OS inválido."
                bRetorno = False
            End If

            If (Not VerificaSeDiaUtil(CDate(dtSaida.Text))) Then
                sMsg = "A data de saída não é um dia útil. Deseja continuar?"
                If (MsgBox(sMsg, MsgBoxStyle.YesNo, "Atenção") = MsgBoxResult.No) Then
                    Return False
                    Exit Function
                End If
            End If

            Return bRetorno

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try


    End Function
#End Region
    Private Sub frmOrdemServico_alteraModo(ByVal eModoAtual As frmPadrao.eModo) Handles Me.alteraModo
        If (modoAtual = eModo.eAguardar Or modoAtual = eModo.eExcluir) Then
            fraCodigo.Enabled = True
            fraCabecalho.Enabled = False
            fraDetalhes.Enabled = False
        Else
            fraCodigo.Enabled = False
            fraCabecalho.Enabled = True
            cmdEditarCliente.Enabled = (prvIDCliente > 0)
            cmdLimparCliente.Enabled = (prvIDCliente > 0)
            cmdProcuraContato.Enabled = (prvIDCliente > 0)
            cmdEditarContato.Enabled = (prvIDContato > 0)
            cmdLimparContato.Enabled = (prvIDContato > 0)

            fraDetalhes.Enabled = True
        End If
    End Sub

    Private Sub cmdProcuraCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProcuraCliente.Click
        Dim sql As String
        Dim frmDialogo As New frmPesquisa

        Try
            sql = Me.objClientes.SqlConsulta(False)

            prvIDCliente = 0
            prvIDContato = 0

            Limpar(Me)

            With frmDialogo
                .Campos = "iIDCliente,sRazaoSocial"
                .Descricoes = "Código,Cliente"
                .Larguras = "50,300"
                .Sql = sql
                .Titulo = "Pesquisa Cliente"
                .CarregaTela()
                If .DS.Tables(0).Rows.Count > 0 Then
                    .ShowDialog()
                    If (.DialogResult = Windows.Forms.DialogResult.OK) Then
                        Me.prvIDCliente = .Id
                        txtIDCliente.Text = Me.prvIDCliente
                        txtNomeCliente.Text = objClientes.selecionarCliente(prvIDCliente).Item("RazaoSocial").ToString
                        Me.modoAtual = eModo.eEditar
                    End If
                Else
                    MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
                    Me.prvIDCliente = 0
                    MyBase.Limpar(Me)
                    Exit Sub
                End If

            End With

        Catch ex As Exception

            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)

        End Try

    End Sub

    Private Sub cmdEditarCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEditarCliente.Click
        Dim frmTelaCliente As New frmCliente

        With frmTelaCliente
            .IDCliente = prvIDCliente

            If (.ShowDialog() = Windows.Forms.DialogResult.OK) Then
                prvIDCliente = .IDCliente
                Me.prvIDCliente = .IDCliente
                txtIDCliente.Text = Me.prvIDCliente
                txtNomeCliente.Text = objClientes.selecionarCliente(prvIDCliente).Item("RazaoSocial").ToString
            End If

        End With
    End Sub

    Private Sub cmdLimparCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLimparCliente.Click

        prvIDCliente = 0
        prvIDContato = 0
        txtIDCliente.Text = String.Empty
        txtNomeCliente.Text = String.Empty
        txtIDContato.Text = String.Empty
        txtContato.Text = String.Empty

    End Sub

    Private Sub cmdProcuraContato_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProcuraContato.Click
        Dim sql As String
        Dim frmDialogo As New frmPesquisa
        Dim sNomeContato As String

        Try

            If (prvIDCliente > 0) Then
                sql = Me.objContatos.sqlConsulta(prvIDCliente)

                With frmDialogo
                    .Campos = "iIDContato,sNomeContato"
                    .Descricoes = "Código,Nome"
                    .Larguras = "50,300"

                    .Sql = sql
                    .Titulo = "Pesquisa Contato"
                    .CarregaTela()
                    If .DS.Tables(0).Rows.Count > 0 Then
                        .ShowDialog()
                        If (.DialogResult = Windows.Forms.DialogResult.OK) Then
                            Me.prvIDContato = .Id
                            sNomeContato = objContatos.selecionarContato(prvIDContato, prvIDCliente, False). _
                                              Tables("DC_Contatos").Rows(0).Item("NomeContato").ToString
                            txtContato.Text = sNomeContato
                            txtIDContato.Text = prvIDContato
                            Me.modoAtual = eModo.eEditar
                        End If
                    Else
                        MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
                        Me.prvIDCliente = 0
                    End If

                End With
            Else
                MsgBox("Cliente não selecionado.", MsgBoxStyle.Information, Me.Text)

            End If

        Catch ex As Exception

            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)

        End Try
    End Sub

    Private Sub cmdEditarContato_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEditarContato.Click
        Dim sNomeContato As String
        Dim frmContatos As New frmContato2

        With frmContatos
            .IDCliente = Me.prvIDCliente
            .IDContato = Me.prvIDContato
            .NomeCliente = txtNomeCliente.Text
            If (.ShowDialog() = Windows.Forms.DialogResult.OK) Then
                sNomeContato = objContatos.selecionarContato(prvIDContato, prvIDCliente, False). _
                                  Tables("DC_Contatos").Rows(0).Item("NomeContato").ToString
                txtContato.Text = sNomeContato
                txtIDContato.Text = prvIDContato
            End If

        End With
    End Sub

    Private Sub cmdLimparContato_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLimparContato.Click

        prvIDContato = 0
        txtIDContato.Text = String.Empty
        txtContato.Text = String.Empty

    End Sub

    Private Sub chkConclusao_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkConclusao.CheckedChanged

        dtConclusao.Enabled = chkConclusao.Checked

    End Sub

    Private Sub cmdGravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGravar.Click

        Call Salvar()

    End Sub

    Private Sub cmdProcura_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProcura.Click
        Dim sql As String
        Dim frmDialogo As New frmPesquisa

        Try
            sql = Me.objOrdemServico.sqlConsulta

            With frmDialogo
                .Campos = "sNumOS,iIDOrdem,sDtEntrada,sRazaoSocial"
                .Descricoes = "Num. OS,Ordem,Entrada, Cliente"
                .Larguras = "40,40,65,260"
                .Sql = sql
                .Titulo = "Pesquisa Ordem de Serviço"
                .CampoSelecao = 0
                .CarregaTela()
                If .DS.Tables(0).Rows.Count > 0 Then
                    .ShowDialog()
                    If (.DialogResult = Windows.Forms.DialogResult.OK) Then
                        Me.prvIDOrdem = .Id
                        Me.Codigo = prvIDOrdem
                        Call CarregarDados()
                    End If
                Else
                    MsgBox("Registro não encontrado", MsgBoxStyle.Exclamation, Me.Text)
                    Me.prvIDCliente = 0
                    MyBase.Limpar(Me)
                    Exit Sub
                End If

            End With

        Catch ex As Exception

            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)

        End Try
    End Sub

    Private Sub cmdExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExcluir.Click
        Try
            If (Me.objOrdemServico.excluirOrdem(prvIDOrdem)) Then
                MyBase.Codigo = 0
                prvIDOrdem = 0
                MyBase.Limpar(Me)
                MyBase.modoAtual = eModo.eAguardar
                txtIDOS.Focus()
            End If

        Catch ex As Exception
            MyBase.modoAtual = eModo.eAguardar
            MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
        End Try

    End Sub

    Private Sub cmdNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNovo.Click

        prvIDOrdem = Me.Codigo

    End Sub
End Class
